<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.12.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>NeuZephyr: D:/Users/Mgepahmge/Documents/C Program/NeuZephyr/include/NeuZephyr/Nodes.cuh Source File</title>
<link rel="icon" href="NZ_logo2.png" type="image/x-icon" />
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectlogo"><img alt="Logo" src="NZ_logo2.png"/></td>
  <td id="projectalign">
   <div id="projectname">NeuZephyr
   </div>
   <div id="projectbrief">Simple DL Framework</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){ initResizable(false); });
/* @license-end */
</script>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_d522931ffa1371640980b621734a4381.html">Users</a></li><li class="navelem"><a class="el" href="dir_a7e6ee1ae3f772c9504a0b543f2027e2.html">Mgepahmge</a></li><li class="navelem"><a class="el" href="dir_e03f57e346cc4845a4c354a35630b169.html">Documents</a></li><li class="navelem"><a class="el" href="dir_231a0482af2b83c895f27ba7fe745141.html">C Program</a></li><li class="navelem"><a class="el" href="dir_0fa7fc3a0dfd304dbfc9dce9f6facfa2.html">NeuZephyr</a></li><li class="navelem"><a class="el" href="dir_e7295b03dab2e9cdf32139bd8ec2e607.html">include</a></li><li class="navelem"><a class="el" href="dir_657344ecc65cfc28732701509f8d8421.html">NeuZephyr</a></li>  </ul>
</div>
</div><!-- top -->
<div id="doc-content">
<div class="header">
  <div class="headertitle"><div class="title">Nodes.cuh</div></div>
</div><!--header-->
<div class="contents">
<a href="_nodes_8cuh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span> </div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span><span class="preprocessor">#ifndef NODES_CUH</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span><span class="preprocessor">#define NODES_CUH</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span><span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span><span class="preprocessor">#include &quot;<a class="code" href="_tensor_8cuh.html">Tensor.cuh</a>&quot;</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacenz_1_1nodes.html">nz::nodes</a> {</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span>    <span class="keyword">using namespace </span>data;</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span> </div>
<div class="foldopen" id="foldopen00114" data-start="{" data-end="}">
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"><a class="line" href="namespacenz_1_1nodes.html#a42672c2d7708ae1d0c071fd9bef6c03c">  114</a></span>    <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span>    <span class="keyword">public</span>:</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span>        <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</span>        <span class="keyword">virtual</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">~Node</a>() = <span class="keywordflow">default</span>;</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span>        std::vector&lt;Node*&gt; inputs;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno">  119</span>        std::shared_ptr&lt;Tensor&gt; output;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">  120</span>        std::string type = <span class="stringliteral">&quot;Basic&quot;</span>;</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span> </div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1_node.html#a8a828c2e91a4aa2a9ab7b94554e4685b">  147</a></span>        <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classnz_1_1nodes_1_1_node.html#a8a828c2e91a4aa2a9ab7b94554e4685b">forward</a>() = 0;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  148</span> </div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1_node.html#a0a9ecbaa3d790ba38e8218aca7837fd0">  177</a></span>        <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classnz_1_1nodes_1_1_node.html#a0a9ecbaa3d790ba38e8218aca7837fd0">backward</a>() = 0;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  178</span> </div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno">  209</span>        <span class="keyword">virtual</span> <span class="keywordtype">void</span> print(std::ostream&amp; os) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  210</span> </div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno">  242</span>        <span class="keywordtype">void</span> dataInject(Tensor::value_type* data, <span class="keywordtype">bool</span> grad = <span class="keyword">false</span>) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno">  243</span> </div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno">  277</span>        <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Iterator&gt;</div>
<div class="foldopen" id="foldopen00278" data-start="{" data-end="}">
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1_node.html#a609f1730085dd1d31e0ddcbbae48a065">  278</a></span>        <span class="keywordtype">void</span> <a class="code hl_function" href="classnz_1_1nodes_1_1_node.html#a609f1730085dd1d31e0ddcbbae48a065">dataInject</a>(Iterator begin, Iterator end, <span class="keyword">const</span> <span class="keywordtype">bool</span> grad = <span class="keyword">false</span>)<span class="keyword"> const </span>{</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno">  279</span>            output-&gt;dataInject(begin, end, grad);</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno">  280</span>        }</div>
</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno">  281</span> </div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno">  311</span>        <span class="keywordtype">void</span> dataInject(<span class="keyword">const</span> std::initializer_list&lt;Tensor::value_type&gt;&amp; data, <span class="keywordtype">bool</span> grad = <span class="keyword">false</span>) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno">  312</span>    };</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno">  313</span> </div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno">  350</span>    <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno">  351</span>    std::enable_if_t&lt;std::is_base_of_v&lt;Node, T&gt;, std::ostream&amp;&gt;</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno">  352</span>    <a class="code hl_function" href="namespacenz_1_1nodes.html#a42672c2d7708ae1d0c071fd9bef6c03c">operator&lt;&lt;</a>(std::ostream&amp; os, <span class="keyword">const</span> T&amp; node) {</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno">  353</span>        node.print(os);</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno">  354</span>        <span class="keywordflow">return</span> os;</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno">  355</span>    }</div>
</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno">  356</span> </div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno">  385</span>    <span class="keyword">namespace </span>io {</div>
<div class="foldopen" id="foldopen00437" data-start="{" data-end="};">
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1io_1_1_input_node.html">  437</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1io_1_1_input_node.html">InputNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno">  438</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno">  465</span>            <span class="keyword">explicit</span> <a class="code hl_class" href="classnz_1_1nodes_1_1io_1_1_input_node.html">InputNode</a>(<span class="keyword">const</span> <a class="code hl_class" href="classnz_1_1data_1_1_dimension.html">Tensor::shape_type</a>&amp; shape, <span class="keywordtype">bool</span> requires_grad = <span class="keyword">false</span>);</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno">  466</span> </div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno">  491</span>            <span class="keyword">explicit</span> <a class="code hl_class" href="classnz_1_1nodes_1_1io_1_1_input_node.html">InputNode</a>(<span class="keyword">const</span> <a class="code hl_class" href="classnz_1_1data_1_1_tensor.html">Tensor</a>&amp; tensor);</div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno">  492</span> </div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno">  532</span>            <span class="keyword">explicit</span> <a class="code hl_class" href="classnz_1_1nodes_1_1io_1_1_input_node.html">InputNode</a>(<span class="keyword">const</span> <a class="code hl_class" href="classnz_1_1data_1_1_dimension.html">Tensor::shape_type</a>&amp; shape, Tensor::value_type* data,</div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno">  533</span>                               <span class="keywordtype">bool</span> requires_grad = <span class="keyword">false</span>, <span class="keywordtype">bool</span> host = <span class="keyword">false</span>);</div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno">  534</span> </div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno">  575</span>            <span class="keyword">explicit</span> <a class="code hl_class" href="classnz_1_1nodes_1_1io_1_1_input_node.html">InputNode</a>(<span class="keyword">const</span> <a class="code hl_class" href="classnz_1_1data_1_1_dimension.html">Tensor::shape_type</a>&amp; shape, <span class="keyword">const</span> std::initializer_list&lt;Tensor::value_type&gt;&amp; data,</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno">  576</span>                               <span class="keywordtype">bool</span> requires_grad = <span class="keyword">false</span>);</div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno">  577</span> </div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno">  602</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno">  603</span> </div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno">  629</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno">  630</span>        };</div>
</div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno">  631</span> </div>
<div class="foldopen" id="foldopen00683" data-start="{" data-end="};">
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1io_1_1_output_node.html">  683</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1io_1_1_output_node.html">OutputNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno">  684</span>        <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno">  685</span>            Tensor::value_type loss;</div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno">  686</span> </div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno">  687</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno">  715</span>            <span class="keyword">explicit</span> <a class="code hl_class" href="classnz_1_1nodes_1_1io_1_1_output_node.html">OutputNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input);</div>
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno">  716</span> </div>
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno">  741</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l00742" name="l00742"></a><span class="lineno">  742</span> </div>
<div class="line"><a id="l00768" name="l00768"></a><span class="lineno">  768</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno">  769</span> </div>
<div class="line"><a id="l00795" name="l00795"></a><span class="lineno">  795</span>            [[nodiscard]] Tensor::value_type getLoss() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00796" name="l00796"></a><span class="lineno">  796</span> </div>
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno">  832</span>            <span class="keywordtype">void</span> print(std::ostream&amp; os) <span class="keyword">const override</span>;</div>
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno">  833</span>        };</div>
</div>
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno">  834</span>    }</div>
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno">  835</span> </div>
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno">  866</span>    <span class="keyword">namespace </span>calc {</div>
<div class="foldopen" id="foldopen00917" data-start="{" data-end="};">
<div class="line"><a id="l00917" name="l00917"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_add_node.html">  917</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_add_node.html">AddNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l00918" name="l00918"></a><span class="lineno">  918</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l00948" name="l00948"></a><span class="lineno">  948</span>            <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_add_node.html">AddNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input_left, <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input_right);</div>
<div class="line"><a id="l00949" name="l00949"></a><span class="lineno">  949</span> </div>
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno">  974</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l00975" name="l00975"></a><span class="lineno">  975</span> </div>
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"> 1006</span>        };</div>
</div>
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"> 1007</span> </div>
<div class="foldopen" id="foldopen01060" data-start="{" data-end="};">
<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_mat_mul_node.html"> 1060</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_mat_mul_node.html">MatMulNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"> 1061</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"> 1093</span>            <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_mat_mul_node.html">MatMulNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input_left, <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input_right);</div>
<div class="line"><a id="l01094" name="l01094"></a><span class="lineno"> 1094</span> </div>
<div class="line"><a id="l01120" name="l01120"></a><span class="lineno"> 1120</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l01121" name="l01121"></a><span class="lineno"> 1121</span> </div>
<div class="line"><a id="l01151" name="l01151"></a><span class="lineno"> 1151</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l01152" name="l01152"></a><span class="lineno"> 1152</span>        };</div>
</div>
<div class="line"><a id="l01153" name="l01153"></a><span class="lineno"> 1153</span> </div>
<div class="foldopen" id="foldopen01205" data-start="{" data-end="};">
<div class="line"><a id="l01205" name="l01205"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_scalar_mul_node.html"> 1205</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_scalar_mul_node.html">ScalarMulNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l01206" name="l01206"></a><span class="lineno"> 1206</span>            Tensor::value_type scalar;</div>
<div class="line"><a id="l01207" name="l01207"></a><span class="lineno"> 1207</span> </div>
<div class="line"><a id="l01208" name="l01208"></a><span class="lineno"> 1208</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l01243" name="l01243"></a><span class="lineno"> 1243</span>            <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_scalar_mul_node.html">ScalarMulNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input, Tensor::value_type scalar);</div>
<div class="line"><a id="l01244" name="l01244"></a><span class="lineno"> 1244</span> </div>
<div class="line"><a id="l01266" name="l01266"></a><span class="lineno"> 1266</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l01267" name="l01267"></a><span class="lineno"> 1267</span> </div>
<div class="line"><a id="l01293" name="l01293"></a><span class="lineno"> 1293</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l01294" name="l01294"></a><span class="lineno"> 1294</span>        };</div>
</div>
<div class="line"><a id="l01295" name="l01295"></a><span class="lineno"> 1295</span> </div>
<div class="foldopen" id="foldopen01350" data-start="{" data-end="};">
<div class="line"><a id="l01350" name="l01350"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_scalar_div_node.html"> 1350</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_scalar_div_node.html">ScalarDivNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l01351" name="l01351"></a><span class="lineno"> 1351</span>            Tensor::value_type scalar;</div>
<div class="line"><a id="l01352" name="l01352"></a><span class="lineno"> 1352</span> </div>
<div class="line"><a id="l01353" name="l01353"></a><span class="lineno"> 1353</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l01393" name="l01393"></a><span class="lineno"> 1393</span>            <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_scalar_div_node.html">ScalarDivNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input, Tensor::value_type scalar);</div>
<div class="line"><a id="l01394" name="l01394"></a><span class="lineno"> 1394</span> </div>
<div class="line"><a id="l01418" name="l01418"></a><span class="lineno"> 1418</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l01419" name="l01419"></a><span class="lineno"> 1419</span> </div>
<div class="line"><a id="l01446" name="l01446"></a><span class="lineno"> 1446</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l01447" name="l01447"></a><span class="lineno"> 1447</span>        };</div>
</div>
<div class="line"><a id="l01448" name="l01448"></a><span class="lineno"> 1448</span> </div>
<div class="foldopen" id="foldopen01499" data-start="{" data-end="};">
<div class="line"><a id="l01499" name="l01499"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_scalar_add_node.html"> 1499</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_scalar_add_node.html">ScalarAddNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l01500" name="l01500"></a><span class="lineno"> 1500</span>            Tensor::value_type scalar;</div>
<div class="line"><a id="l01501" name="l01501"></a><span class="lineno"> 1501</span> </div>
<div class="line"><a id="l01502" name="l01502"></a><span class="lineno"> 1502</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l01536" name="l01536"></a><span class="lineno"> 1536</span>            <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_scalar_add_node.html">ScalarAddNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input, Tensor::value_type scalar);</div>
<div class="line"><a id="l01537" name="l01537"></a><span class="lineno"> 1537</span> </div>
<div class="line"><a id="l01561" name="l01561"></a><span class="lineno"> 1561</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l01562" name="l01562"></a><span class="lineno"> 1562</span> </div>
<div class="line"><a id="l01586" name="l01586"></a><span class="lineno"> 1586</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l01587" name="l01587"></a><span class="lineno"> 1587</span>        };</div>
</div>
<div class="line"><a id="l01588" name="l01588"></a><span class="lineno"> 1588</span> </div>
<div class="foldopen" id="foldopen01640" data-start="{" data-end="};">
<div class="line"><a id="l01640" name="l01640"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_scalar_sub_node.html"> 1640</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_scalar_sub_node.html">ScalarSubNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l01641" name="l01641"></a><span class="lineno"> 1641</span>            Tensor::value_type scalar;</div>
<div class="line"><a id="l01642" name="l01642"></a><span class="lineno"> 1642</span> </div>
<div class="line"><a id="l01643" name="l01643"></a><span class="lineno"> 1643</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l01679" name="l01679"></a><span class="lineno"> 1679</span>            <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_scalar_sub_node.html">ScalarSubNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input, Tensor::value_type scalar);</div>
<div class="line"><a id="l01680" name="l01680"></a><span class="lineno"> 1680</span> </div>
<div class="line"><a id="l01706" name="l01706"></a><span class="lineno"> 1706</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l01707" name="l01707"></a><span class="lineno"> 1707</span> </div>
<div class="line"><a id="l01731" name="l01731"></a><span class="lineno"> 1731</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l01732" name="l01732"></a><span class="lineno"> 1732</span>        };</div>
</div>
<div class="line"><a id="l01733" name="l01733"></a><span class="lineno"> 1733</span> </div>
<div class="foldopen" id="foldopen01787" data-start="{" data-end="};">
<div class="line"><a id="l01787" name="l01787"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_sub_node.html"> 1787</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_sub_node.html">SubNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l01788" name="l01788"></a><span class="lineno"> 1788</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l01821" name="l01821"></a><span class="lineno"> 1821</span>            <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_sub_node.html">SubNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input_left, <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input_right);</div>
<div class="line"><a id="l01822" name="l01822"></a><span class="lineno"> 1822</span> </div>
<div class="line"><a id="l01847" name="l01847"></a><span class="lineno"> 1847</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l01848" name="l01848"></a><span class="lineno"> 1848</span> </div>
<div class="line"><a id="l01879" name="l01879"></a><span class="lineno"> 1879</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l01880" name="l01880"></a><span class="lineno"> 1880</span>        };</div>
</div>
<div class="line"><a id="l01881" name="l01881"></a><span class="lineno"> 1881</span> </div>
<div class="foldopen" id="foldopen01929" data-start="{" data-end="};">
<div class="line"><a id="l01929" name="l01929"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_re_l_u_node.html"> 1929</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_re_l_u_node.html">ReLUNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l01930" name="l01930"></a><span class="lineno"> 1930</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l01958" name="l01958"></a><span class="lineno"> 1958</span>            <span class="keyword">explicit</span> <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_re_l_u_node.html">ReLUNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input);</div>
<div class="line"><a id="l01959" name="l01959"></a><span class="lineno"> 1959</span> </div>
<div class="line"><a id="l01984" name="l01984"></a><span class="lineno"> 1984</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l01985" name="l01985"></a><span class="lineno"> 1985</span> </div>
<div class="line"><a id="l02015" name="l02015"></a><span class="lineno"> 2015</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l02016" name="l02016"></a><span class="lineno"> 2016</span>        };</div>
</div>
<div class="line"><a id="l02017" name="l02017"></a><span class="lineno"> 2017</span> </div>
<div class="foldopen" id="foldopen02072" data-start="{" data-end="};">
<div class="line"><a id="l02072" name="l02072"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_sigmoid_node.html"> 2072</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_sigmoid_node.html">SigmoidNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l02073" name="l02073"></a><span class="lineno"> 2073</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l02104" name="l02104"></a><span class="lineno"> 2104</span>            <span class="keyword">explicit</span> <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_sigmoid_node.html">SigmoidNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input);</div>
<div class="line"><a id="l02105" name="l02105"></a><span class="lineno"> 2105</span> </div>
<div class="line"><a id="l02129" name="l02129"></a><span class="lineno"> 2129</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l02130" name="l02130"></a><span class="lineno"> 2130</span> </div>
<div class="line"><a id="l02158" name="l02158"></a><span class="lineno"> 2158</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l02159" name="l02159"></a><span class="lineno"> 2159</span>        };</div>
</div>
<div class="line"><a id="l02160" name="l02160"></a><span class="lineno"> 2160</span> </div>
<div class="foldopen" id="foldopen02214" data-start="{" data-end="};">
<div class="line"><a id="l02214" name="l02214"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_tanh_node.html"> 2214</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_tanh_node.html">TanhNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l02215" name="l02215"></a><span class="lineno"> 2215</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l02246" name="l02246"></a><span class="lineno"> 2246</span>            <span class="keyword">explicit</span> <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_tanh_node.html">TanhNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input);</div>
<div class="line"><a id="l02247" name="l02247"></a><span class="lineno"> 2247</span> </div>
<div class="line"><a id="l02271" name="l02271"></a><span class="lineno"> 2271</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l02272" name="l02272"></a><span class="lineno"> 2272</span> </div>
<div class="line"><a id="l02299" name="l02299"></a><span class="lineno"> 2299</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l02300" name="l02300"></a><span class="lineno"> 2300</span>        };</div>
</div>
<div class="line"><a id="l02301" name="l02301"></a><span class="lineno"> 2301</span> </div>
<div class="foldopen" id="foldopen02353" data-start="{" data-end="};">
<div class="line"><a id="l02353" name="l02353"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_leaky_re_l_u_node.html"> 2353</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_leaky_re_l_u_node.html">LeakyReLUNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l02354" name="l02354"></a><span class="lineno"> 2354</span>            Tensor::value_type alpha;</div>
<div class="line"><a id="l02355" name="l02355"></a><span class="lineno"> 2355</span> </div>
<div class="line"><a id="l02356" name="l02356"></a><span class="lineno"> 2356</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l02391" name="l02391"></a><span class="lineno"> 2391</span>            <span class="keyword">explicit</span> <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_leaky_re_l_u_node.html">LeakyReLUNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input, Tensor::value_type alpha = 0.01f);</div>
<div class="line"><a id="l02392" name="l02392"></a><span class="lineno"> 2392</span> </div>
<div class="line"><a id="l02417" name="l02417"></a><span class="lineno"> 2417</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l02418" name="l02418"></a><span class="lineno"> 2418</span> </div>
<div class="line"><a id="l02448" name="l02448"></a><span class="lineno"> 2448</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l02449" name="l02449"></a><span class="lineno"> 2449</span>        };</div>
</div>
<div class="line"><a id="l02450" name="l02450"></a><span class="lineno"> 2450</span> </div>
<div class="foldopen" id="foldopen02504" data-start="{" data-end="};">
<div class="line"><a id="l02504" name="l02504"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_swish_node.html"> 2504</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_swish_node.html">SwishNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l02505" name="l02505"></a><span class="lineno"> 2505</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l02536" name="l02536"></a><span class="lineno"> 2536</span>            <span class="keyword">explicit</span> <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_swish_node.html">SwishNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input);</div>
<div class="line"><a id="l02537" name="l02537"></a><span class="lineno"> 2537</span> </div>
<div class="line"><a id="l02560" name="l02560"></a><span class="lineno"> 2560</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l02561" name="l02561"></a><span class="lineno"> 2561</span> </div>
<div class="line"><a id="l02589" name="l02589"></a><span class="lineno"> 2589</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l02590" name="l02590"></a><span class="lineno"> 2590</span>        };</div>
</div>
<div class="line"><a id="l02591" name="l02591"></a><span class="lineno"> 2591</span> </div>
<div class="foldopen" id="foldopen02648" data-start="{" data-end="};">
<div class="line"><a id="l02648" name="l02648"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_e_l_u_node.html"> 2648</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_e_l_u_node.html">ELUNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l02649" name="l02649"></a><span class="lineno"> 2649</span>            Tensor::value_type alpha;</div>
<div class="line"><a id="l02650" name="l02650"></a><span class="lineno"> 2650</span> </div>
<div class="line"><a id="l02651" name="l02651"></a><span class="lineno"> 2651</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l02686" name="l02686"></a><span class="lineno"> 2686</span>            <span class="keyword">explicit</span> <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_e_l_u_node.html">ELUNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input, Tensor::value_type alpha = 1.0f);</div>
<div class="line"><a id="l02687" name="l02687"></a><span class="lineno"> 2687</span> </div>
<div class="line"><a id="l02714" name="l02714"></a><span class="lineno"> 2714</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l02715" name="l02715"></a><span class="lineno"> 2715</span> </div>
<div class="line"><a id="l02745" name="l02745"></a><span class="lineno"> 2745</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l02746" name="l02746"></a><span class="lineno"> 2746</span>        };</div>
</div>
<div class="line"><a id="l02747" name="l02747"></a><span class="lineno"> 2747</span> </div>
<div class="foldopen" id="foldopen02803" data-start="{" data-end="};">
<div class="line"><a id="l02803" name="l02803"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_hard_sigmoid_node.html"> 2803</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_hard_sigmoid_node.html">HardSigmoidNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l02804" name="l02804"></a><span class="lineno"> 2804</span>            Tensor::value_type alpha;</div>
<div class="line"><a id="l02805" name="l02805"></a><span class="lineno"> 2805</span>            Tensor::value_type beta;</div>
<div class="line"><a id="l02806" name="l02806"></a><span class="lineno"> 2806</span> </div>
<div class="line"><a id="l02807" name="l02807"></a><span class="lineno"> 2807</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l02842" name="l02842"></a><span class="lineno"> 2842</span>            <span class="keyword">explicit</span> <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_hard_sigmoid_node.html">HardSigmoidNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input, Tensor::value_type alpha = 0.2f, Tensor::value_type beta = 0.5f);</div>
<div class="line"><a id="l02843" name="l02843"></a><span class="lineno"> 2843</span> </div>
<div class="line"><a id="l02870" name="l02870"></a><span class="lineno"> 2870</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l02871" name="l02871"></a><span class="lineno"> 2871</span> </div>
<div class="line"><a id="l02900" name="l02900"></a><span class="lineno"> 2900</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l02901" name="l02901"></a><span class="lineno"> 2901</span>        };</div>
</div>
<div class="line"><a id="l02902" name="l02902"></a><span class="lineno"> 2902</span> </div>
<div class="foldopen" id="foldopen02954" data-start="{" data-end="};">
<div class="line"><a id="l02954" name="l02954"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_hard_swish_node.html"> 2954</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_hard_swish_node.html">HardSwishNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l02955" name="l02955"></a><span class="lineno"> 2955</span>            Tensor::value_type alpha;</div>
<div class="line"><a id="l02956" name="l02956"></a><span class="lineno"> 2956</span>            Tensor::value_type beta;</div>
<div class="line"><a id="l02957" name="l02957"></a><span class="lineno"> 2957</span> </div>
<div class="line"><a id="l02958" name="l02958"></a><span class="lineno"> 2958</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l02997" name="l02997"></a><span class="lineno"> 2997</span>            <span class="keyword">explicit</span> <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_hard_swish_node.html">HardSwishNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input, Tensor::value_type alpha = 1.0f, Tensor::value_type beta = 0.5f);</div>
<div class="line"><a id="l02998" name="l02998"></a><span class="lineno"> 2998</span> </div>
<div class="line"><a id="l03036" name="l03036"></a><span class="lineno"> 3036</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l03037" name="l03037"></a><span class="lineno"> 3037</span> </div>
<div class="line"><a id="l03080" name="l03080"></a><span class="lineno"> 3080</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l03081" name="l03081"></a><span class="lineno"> 3081</span>        };</div>
</div>
<div class="line"><a id="l03082" name="l03082"></a><span class="lineno"> 3082</span> </div>
<div class="foldopen" id="foldopen03152" data-start="{" data-end="};">
<div class="line"><a id="l03152" name="l03152"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_softmax_node.html"> 3152</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_softmax_node.html">SoftmaxNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l03153" name="l03153"></a><span class="lineno"> 3153</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l03191" name="l03191"></a><span class="lineno"> 3191</span>            <span class="keyword">explicit</span> <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_softmax_node.html">SoftmaxNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input);</div>
<div class="line"><a id="l03192" name="l03192"></a><span class="lineno"> 3192</span> </div>
<div class="line"><a id="l03234" name="l03234"></a><span class="lineno"> 3234</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l03235" name="l03235"></a><span class="lineno"> 3235</span> </div>
<div class="line"><a id="l03277" name="l03277"></a><span class="lineno"> 3277</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l03278" name="l03278"></a><span class="lineno"> 3278</span>        };</div>
</div>
<div class="line"><a id="l03279" name="l03279"></a><span class="lineno"> 3279</span> </div>
<div class="foldopen" id="foldopen03344" data-start="{" data-end="};">
<div class="line"><a id="l03344" name="l03344"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_reshape_node.html"> 3344</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_reshape_node.html">ReshapeNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l03345" name="l03345"></a><span class="lineno"> 3345</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l03346" name="l03346"></a><span class="lineno"> 3346</span>            <a class="code hl_class" href="classnz_1_1data_1_1_dimension.html">Tensor::shape_type</a> newShape;</div>
<div class="line"><a id="l03347" name="l03347"></a><span class="lineno"> 3347</span> </div>
<div class="line"><a id="l03389" name="l03389"></a><span class="lineno"> 3389</span>            <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_reshape_node.html">ReshapeNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input, <span class="keyword">const</span> <a class="code hl_class" href="classnz_1_1data_1_1_dimension.html">Tensor::shape_type</a>&amp; newShape);</div>
<div class="line"><a id="l03390" name="l03390"></a><span class="lineno"> 3390</span> </div>
<div class="line"><a id="l03430" name="l03430"></a><span class="lineno"> 3430</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l03431" name="l03431"></a><span class="lineno"> 3431</span> </div>
<div class="line"><a id="l03466" name="l03466"></a><span class="lineno"> 3466</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l03467" name="l03467"></a><span class="lineno"> 3467</span>        };</div>
</div>
<div class="line"><a id="l03468" name="l03468"></a><span class="lineno"> 3468</span> </div>
<div class="foldopen" id="foldopen03536" data-start="{" data-end="};">
<div class="line"><a id="l03536" name="l03536"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_expand_node.html"> 3536</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_expand_node.html">ExpandNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l03537" name="l03537"></a><span class="lineno"> 3537</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l03538" name="l03538"></a><span class="lineno"> 3538</span>            Tensor::size_type newBatch;</div>
<div class="line"><a id="l03539" name="l03539"></a><span class="lineno"> 3539</span> </div>
<div class="line"><a id="l03578" name="l03578"></a><span class="lineno"> 3578</span>            <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_expand_node.html">ExpandNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input, Tensor::size_type newBatch);</div>
<div class="line"><a id="l03579" name="l03579"></a><span class="lineno"> 3579</span> </div>
<div class="line"><a id="l03618" name="l03618"></a><span class="lineno"> 3618</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l03619" name="l03619"></a><span class="lineno"> 3619</span> </div>
<div class="line"><a id="l03659" name="l03659"></a><span class="lineno"> 3659</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l03660" name="l03660"></a><span class="lineno"> 3660</span>        };</div>
</div>
<div class="line"><a id="l03661" name="l03661"></a><span class="lineno"> 3661</span> </div>
<div class="foldopen" id="foldopen03729" data-start="{" data-end="};">
<div class="line"><a id="l03729" name="l03729"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_img2_col_node.html"> 3729</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_img2_col_node.html">Img2ColNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l03730" name="l03730"></a><span class="lineno"> 3730</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l03731" name="l03731"></a><span class="lineno"> 3731</span>            Tensor::size_type kernelHeight;</div>
<div class="line"><a id="l03732" name="l03732"></a><span class="lineno"> 3732</span>            Tensor::size_type kernelWidth;</div>
<div class="line"><a id="l03733" name="l03733"></a><span class="lineno"> 3733</span>            Tensor::size_type stride;</div>
<div class="line"><a id="l03734" name="l03734"></a><span class="lineno"> 3734</span>            Tensor::size_type padding;</div>
<div class="line"><a id="l03735" name="l03735"></a><span class="lineno"> 3735</span>            Tensor::size_type outputHeight;</div>
<div class="line"><a id="l03736" name="l03736"></a><span class="lineno"> 3736</span>            Tensor::size_type outputWidth;</div>
<div class="line"><a id="l03737" name="l03737"></a><span class="lineno"> 3737</span> </div>
<div class="line"><a id="l03774" name="l03774"></a><span class="lineno"> 3774</span>            <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_img2_col_node.html">Img2ColNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input, Tensor::size_type kernelHeight, Tensor::size_type kernelWidth,</div>
<div class="line"><a id="l03775" name="l03775"></a><span class="lineno"> 3775</span>                        Tensor::size_type stride, Tensor::size_type padding);</div>
<div class="line"><a id="l03776" name="l03776"></a><span class="lineno"> 3776</span> </div>
<div class="line"><a id="l03806" name="l03806"></a><span class="lineno"> 3806</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l03807" name="l03807"></a><span class="lineno"> 3807</span> </div>
<div class="line"><a id="l03837" name="l03837"></a><span class="lineno"> 3837</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l03838" name="l03838"></a><span class="lineno"> 3838</span>        };</div>
</div>
<div class="line"><a id="l03839" name="l03839"></a><span class="lineno"> 3839</span> </div>
<div class="foldopen" id="foldopen03910" data-start="{" data-end="};">
<div class="line"><a id="l03910" name="l03910"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_col2_img_node.html"> 3910</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_col2_img_node.html">Col2ImgNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l03911" name="l03911"></a><span class="lineno"> 3911</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l03912" name="l03912"></a><span class="lineno"> 3912</span>            Tensor::size_type outputHeight;</div>
<div class="line"><a id="l03913" name="l03913"></a><span class="lineno"> 3913</span>            Tensor::size_type outputWidth;</div>
<div class="line"><a id="l03914" name="l03914"></a><span class="lineno"> 3914</span>            Tensor::size_type outputChannels;</div>
<div class="line"><a id="l03915" name="l03915"></a><span class="lineno"> 3915</span> </div>
<div class="line"><a id="l03951" name="l03951"></a><span class="lineno"> 3951</span>            <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_col2_img_node.html">Col2ImgNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input, Tensor::size_type outputHeight, Tensor::size_type outputWidth);</div>
<div class="line"><a id="l03952" name="l03952"></a><span class="lineno"> 3952</span> </div>
<div class="line"><a id="l03984" name="l03984"></a><span class="lineno"> 3984</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l03985" name="l03985"></a><span class="lineno"> 3985</span> </div>
<div class="line"><a id="l04017" name="l04017"></a><span class="lineno"> 4017</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l04018" name="l04018"></a><span class="lineno"> 4018</span>        };</div>
</div>
<div class="line"><a id="l04019" name="l04019"></a><span class="lineno"> 4019</span> </div>
<div class="foldopen" id="foldopen04088" data-start="{" data-end="};">
<div class="line"><a id="l04088" name="l04088"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_average_pooling_node.html"> 4088</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_average_pooling_node.html">AveragePoolingNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l04089" name="l04089"></a><span class="lineno"> 4089</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l04090" name="l04090"></a><span class="lineno"> 4090</span>            Tensor::size_type poolSize;</div>
<div class="line"><a id="l04091" name="l04091"></a><span class="lineno"> 4091</span>            Tensor::size_type stride;</div>
<div class="line"><a id="l04092" name="l04092"></a><span class="lineno"> 4092</span>            Tensor::size_type padding;</div>
<div class="line"><a id="l04093" name="l04093"></a><span class="lineno"> 4093</span> </div>
<div class="line"><a id="l04131" name="l04131"></a><span class="lineno"> 4131</span>            <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_average_pooling_node.html">AveragePoolingNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input, Tensor::size_type poolSize, Tensor::size_type stride,</div>
<div class="line"><a id="l04132" name="l04132"></a><span class="lineno"> 4132</span>                               Tensor::size_type padding);</div>
<div class="line"><a id="l04133" name="l04133"></a><span class="lineno"> 4133</span> </div>
<div class="line"><a id="l04165" name="l04165"></a><span class="lineno"> 4165</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l04166" name="l04166"></a><span class="lineno"> 4166</span> </div>
<div class="line"><a id="l04198" name="l04198"></a><span class="lineno"> 4198</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l04199" name="l04199"></a><span class="lineno"> 4199</span>        };</div>
</div>
<div class="line"><a id="l04200" name="l04200"></a><span class="lineno"> 4200</span> </div>
<div class="foldopen" id="foldopen04269" data-start="{" data-end="};">
<div class="line"><a id="l04269" name="l04269"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_global_avg_pool_node.html"> 4269</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_global_avg_pool_node.html">GlobalAvgPoolNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l04270" name="l04270"></a><span class="lineno"> 4270</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l04302" name="l04302"></a><span class="lineno"> 4302</span>            <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_global_avg_pool_node.html">GlobalAvgPoolNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input);</div>
<div class="line"><a id="l04303" name="l04303"></a><span class="lineno"> 4303</span> </div>
<div class="line"><a id="l04335" name="l04335"></a><span class="lineno"> 4335</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l04336" name="l04336"></a><span class="lineno"> 4336</span> </div>
<div class="line"><a id="l04367" name="l04367"></a><span class="lineno"> 4367</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l04368" name="l04368"></a><span class="lineno"> 4368</span>        };</div>
</div>
<div class="line"><a id="l04369" name="l04369"></a><span class="lineno"> 4369</span> </div>
<div class="foldopen" id="foldopen04440" data-start="{" data-end="};">
<div class="line"><a id="l04440" name="l04440"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_max_pooling_node.html"> 4440</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_max_pooling_node.html">MaxPoolingNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l04441" name="l04441"></a><span class="lineno"> 4441</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l04442" name="l04442"></a><span class="lineno"> 4442</span>            std::shared_ptr&lt;Tensor&gt; position;</div>
<div class="line"><a id="l04443" name="l04443"></a><span class="lineno"> 4443</span>            Tensor::size_type poolSize;</div>
<div class="line"><a id="l04444" name="l04444"></a><span class="lineno"> 4444</span>            Tensor::size_type stride;</div>
<div class="line"><a id="l04445" name="l04445"></a><span class="lineno"> 4445</span>            Tensor::size_type padding;</div>
<div class="line"><a id="l04446" name="l04446"></a><span class="lineno"> 4446</span> </div>
<div class="line"><a id="l04481" name="l04481"></a><span class="lineno"> 4481</span>            <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_max_pooling_node.html">MaxPoolingNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input, Tensor::size_type poolSize, Tensor::size_type stride,</div>
<div class="line"><a id="l04482" name="l04482"></a><span class="lineno"> 4482</span>                           Tensor::size_type padding);</div>
<div class="line"><a id="l04483" name="l04483"></a><span class="lineno"> 4483</span> </div>
<div class="line"><a id="l04515" name="l04515"></a><span class="lineno"> 4515</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l04516" name="l04516"></a><span class="lineno"> 4516</span> </div>
<div class="line"><a id="l04548" name="l04548"></a><span class="lineno"> 4548</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l04549" name="l04549"></a><span class="lineno"> 4549</span>        };</div>
</div>
<div class="line"><a id="l04550" name="l04550"></a><span class="lineno"> 4550</span> </div>
<div class="foldopen" id="foldopen04619" data-start="{" data-end="};">
<div class="line"><a id="l04619" name="l04619"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1calc_1_1_global_max_pool_node.html"> 4619</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_global_max_pool_node.html">GlobalMaxPoolNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a> {</div>
<div class="line"><a id="l04620" name="l04620"></a><span class="lineno"> 4620</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l04652" name="l04652"></a><span class="lineno"> 4652</span>            <a class="code hl_class" href="classnz_1_1nodes_1_1calc_1_1_global_max_pool_node.html">GlobalMaxPoolNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input);</div>
<div class="line"><a id="l04653" name="l04653"></a><span class="lineno"> 4653</span> </div>
<div class="line"><a id="l04685" name="l04685"></a><span class="lineno"> 4685</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l04686" name="l04686"></a><span class="lineno"> 4686</span> </div>
<div class="line"><a id="l04718" name="l04718"></a><span class="lineno"> 4718</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l04719" name="l04719"></a><span class="lineno"> 4719</span>        };</div>
</div>
<div class="line"><a id="l04720" name="l04720"></a><span class="lineno"> 4720</span>    }</div>
<div class="line"><a id="l04721" name="l04721"></a><span class="lineno"> 4721</span> </div>
<div class="line"><a id="l04748" name="l04748"></a><span class="lineno"> 4748</span>    <span class="keyword">namespace </span>loss {</div>
<div class="foldopen" id="foldopen04804" data-start="{" data-end="};">
<div class="line"><a id="l04804" name="l04804"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1loss_1_1_mean_squared_error_node.html"> 4804</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1loss_1_1_mean_squared_error_node.html">MeanSquaredErrorNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1io_1_1_output_node.html">io::OutputNode</a> {</div>
<div class="line"><a id="l04805" name="l04805"></a><span class="lineno"> 4805</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l04836" name="l04836"></a><span class="lineno"> 4836</span>            <span class="keyword">explicit</span> <a class="code hl_class" href="classnz_1_1nodes_1_1loss_1_1_mean_squared_error_node.html">MeanSquaredErrorNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input1, <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input2);</div>
<div class="line"><a id="l04837" name="l04837"></a><span class="lineno"> 4837</span> </div>
<div class="line"><a id="l04867" name="l04867"></a><span class="lineno"> 4867</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l04868" name="l04868"></a><span class="lineno"> 4868</span> </div>
<div class="line"><a id="l04898" name="l04898"></a><span class="lineno"> 4898</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l04899" name="l04899"></a><span class="lineno"> 4899</span>        };</div>
</div>
<div class="line"><a id="l04900" name="l04900"></a><span class="lineno"> 4900</span> </div>
<div class="foldopen" id="foldopen04958" data-start="{" data-end="};">
<div class="line"><a id="l04958" name="l04958"></a><span class="lineno"><a class="line" href="classnz_1_1nodes_1_1loss_1_1_binary_cross_entropy_node.html"> 4958</a></span>        <span class="keyword">class </span>DL_API <a class="code hl_class" href="classnz_1_1nodes_1_1loss_1_1_binary_cross_entropy_node.html">BinaryCrossEntropyNode</a> : <span class="keyword">public</span> <a class="code hl_class" href="classnz_1_1nodes_1_1io_1_1_output_node.html">io::OutputNode</a> {</div>
<div class="line"><a id="l04959" name="l04959"></a><span class="lineno"> 4959</span>        <span class="keyword">public</span>:</div>
<div class="line"><a id="l04985" name="l04985"></a><span class="lineno"> 4985</span>            <span class="keyword">explicit</span> <a class="code hl_class" href="classnz_1_1nodes_1_1loss_1_1_binary_cross_entropy_node.html">BinaryCrossEntropyNode</a>(<a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input1, <a class="code hl_class" href="classnz_1_1nodes_1_1_node.html">Node</a>* input2);</div>
<div class="line"><a id="l04986" name="l04986"></a><span class="lineno"> 4986</span> </div>
<div class="line"><a id="l05020" name="l05020"></a><span class="lineno"> 5020</span>            <span class="keywordtype">void</span> forward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l05021" name="l05021"></a><span class="lineno"> 5021</span> </div>
<div class="line"><a id="l05056" name="l05056"></a><span class="lineno"> 5056</span>            <span class="keywordtype">void</span> backward() <span class="keyword">override</span>;</div>
<div class="line"><a id="l05057" name="l05057"></a><span class="lineno"> 5057</span>        };</div>
</div>
<div class="line"><a id="l05058" name="l05058"></a><span class="lineno"> 5058</span>    }</div>
<div class="line"><a id="l05059" name="l05059"></a><span class="lineno"> 5059</span>}</div>
<div class="line"><a id="l05060" name="l05060"></a><span class="lineno"> 5060</span> </div>
<div class="line"><a id="l05061" name="l05061"></a><span class="lineno"> 5061</span><span class="preprocessor">#endif </span><span class="comment">//NODES_CUH</span></div>
<div class="ttc" id="a_tensor_8cuh_html"><div class="ttname"><a href="_tensor_8cuh.html">Tensor.cuh</a></div><div class="ttdoc">Definition of the Tensor class for GPU-based tensor operations.</div></div>
<div class="ttc" id="aclassnz_1_1data_1_1_dimension_html"><div class="ttname"><a href="classnz_1_1data_1_1_dimension.html">nz::data::Dimension</a></div><div class="ttdoc">Represents a multi - dimensional shape, typically used in deep learning for tensor dimensions.</div><div class="ttdef"><b>Definition</b> <a href="_dimension_8cuh_source.html#l00057">Dimension.cuh:57</a></div></div>
<div class="ttc" id="aclassnz_1_1data_1_1_tensor_html"><div class="ttname"><a href="classnz_1_1data_1_1_tensor.html">nz::data::Tensor</a></div><div class="ttdoc">A class for representing and manipulating multidimensional arrays (tensors) in GPU memory.</div><div class="ttdef"><b>Definition</b> <a href="_tensor_8cuh_source.html#l00134">Tensor.cuh:134</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1_node.html">nz::nodes::Node</a></div><div class="ttdoc">Base class for nodes in a neural network or computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l00114">Nodes.cuh:114</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1_node_html_a0a9ecbaa3d790ba38e8218aca7837fd0"><div class="ttname"><a href="classnz_1_1nodes_1_1_node.html#a0a9ecbaa3d790ba38e8218aca7837fd0">nz::nodes::Node::backward</a></div><div class="ttdeci">virtual void backward()=0</div><div class="ttdoc">Abstract method for the backward pass (gradient computation).</div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1_node_html_a609f1730085dd1d31e0ddcbbae48a065"><div class="ttname"><a href="classnz_1_1nodes_1_1_node.html#a609f1730085dd1d31e0ddcbbae48a065">nz::nodes::Node::dataInject</a></div><div class="ttdeci">void dataInject(Iterator begin, Iterator end, const bool grad=false) const</div><div class="ttdoc">Injects data from an iterator range into the output tensor of the InputNode, optionally setting its g...</div><div class="ttdef"><b>Definition</b> <a href="#l00278">Nodes.cuh:278</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1_node_html_a8a828c2e91a4aa2a9ab7b94554e4685b"><div class="ttname"><a href="classnz_1_1nodes_1_1_node.html#a8a828c2e91a4aa2a9ab7b94554e4685b">nz::nodes::Node::forward</a></div><div class="ttdeci">virtual void forward()=0</div><div class="ttdoc">Abstract method for the forward pass computation.</div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_add_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_add_node.html">nz::nodes::calc::AddNode</a></div><div class="ttdoc">Represents a node that performs element-wise addition between two input tensors.</div><div class="ttdef"><b>Definition</b> <a href="#l00917">Nodes.cuh:917</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_average_pooling_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_average_pooling_node.html">nz::nodes::calc::AveragePoolingNode</a></div><div class="ttdoc">Implements average pooling operation for spatial downsampling in neural networks.</div><div class="ttdef"><b>Definition</b> <a href="#l04088">Nodes.cuh:4088</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_col2_img_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_col2_img_node.html">nz::nodes::calc::Col2ImgNode</a></div><div class="ttdoc">Reconstructs spatial tensors from column matrices generated by im2col transformation.</div><div class="ttdef"><b>Definition</b> <a href="#l03910">Nodes.cuh:3910</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_e_l_u_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_e_l_u_node.html">nz::nodes::calc::ELUNode</a></div><div class="ttdoc">Represents an Exponential Linear Unit (ELU) activation function node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l02648">Nodes.cuh:2648</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_expand_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_expand_node.html">nz::nodes::calc::ExpandNode</a></div><div class="ttdoc">Expands tensors with batch size 1 to arbitrary batch dimensions through data replication.</div><div class="ttdef"><b>Definition</b> <a href="#l03536">Nodes.cuh:3536</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_global_avg_pool_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_global_avg_pool_node.html">nz::nodes::calc::GlobalAvgPoolNode</a></div><div class="ttdoc">Performs global average pooling operation across spatial dimensions of input tensor.</div><div class="ttdef"><b>Definition</b> <a href="#l04269">Nodes.cuh:4269</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_global_max_pool_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_global_max_pool_node.html">nz::nodes::calc::GlobalMaxPoolNode</a></div><div class="ttdoc">Performs global max pooling operation across spatial dimensions of input tensor.</div><div class="ttdef"><b>Definition</b> <a href="#l04619">Nodes.cuh:4619</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_hard_sigmoid_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_hard_sigmoid_node.html">nz::nodes::calc::HardSigmoidNode</a></div><div class="ttdoc">Represents a Hard Sigmoid activation function node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l02803">Nodes.cuh:2803</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_hard_swish_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_hard_swish_node.html">nz::nodes::calc::HardSwishNode</a></div><div class="ttdoc">Represents a Hard Swish activation function node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l02954">Nodes.cuh:2954</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_img2_col_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_img2_col_node.html">nz::nodes::calc::Img2ColNode</a></div><div class="ttdoc">Implements im2col transformation for efficient convolution operations in neural networks.</div><div class="ttdef"><b>Definition</b> <a href="#l03729">Nodes.cuh:3729</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_leaky_re_l_u_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_leaky_re_l_u_node.html">nz::nodes::calc::LeakyReLUNode</a></div><div class="ttdoc">Represents a Leaky Rectified Linear Unit (LeakyReLU) activation function node in a computational grap...</div><div class="ttdef"><b>Definition</b> <a href="#l02353">Nodes.cuh:2353</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_mat_mul_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_mat_mul_node.html">nz::nodes::calc::MatMulNode</a></div><div class="ttdoc">Represents a matrix multiplication operation node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l01060">Nodes.cuh:1060</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_max_pooling_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_max_pooling_node.html">nz::nodes::calc::MaxPoolingNode</a></div><div class="ttdoc">Implements max pooling operation for spatial downsampling with feature preservation.</div><div class="ttdef"><b>Definition</b> <a href="#l04440">Nodes.cuh:4440</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_re_l_u_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_re_l_u_node.html">nz::nodes::calc::ReLUNode</a></div><div class="ttdoc">Represents a Rectified Linear Unit (ReLU) operation node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l01929">Nodes.cuh:1929</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_reshape_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_reshape_node.html">nz::nodes::calc::ReshapeNode</a></div><div class="ttdoc">Implements tensor shape transformation within a neural network computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l03344">Nodes.cuh:3344</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_scalar_add_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_scalar_add_node.html">nz::nodes::calc::ScalarAddNode</a></div><div class="ttdoc">Represents a scalar addition operation node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l01499">Nodes.cuh:1499</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_scalar_div_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_scalar_div_node.html">nz::nodes::calc::ScalarDivNode</a></div><div class="ttdoc">Represents a scalar division operation node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l01350">Nodes.cuh:1350</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_scalar_mul_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_scalar_mul_node.html">nz::nodes::calc::ScalarMulNode</a></div><div class="ttdoc">Represents a scalar multiplication operation node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l01205">Nodes.cuh:1205</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_scalar_sub_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_scalar_sub_node.html">nz::nodes::calc::ScalarSubNode</a></div><div class="ttdoc">Represents a scalar subtraction operation node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l01640">Nodes.cuh:1640</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_sigmoid_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_sigmoid_node.html">nz::nodes::calc::SigmoidNode</a></div><div class="ttdoc">Represents a Sigmoid activation function node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l02072">Nodes.cuh:2072</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_softmax_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_softmax_node.html">nz::nodes::calc::SoftmaxNode</a></div><div class="ttdoc">Implements the Softmax activation function as a node in a neural network computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l03152">Nodes.cuh:3152</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_sub_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_sub_node.html">nz::nodes::calc::SubNode</a></div><div class="ttdoc">Represents a subtraction operation node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l01787">Nodes.cuh:1787</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_swish_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_swish_node.html">nz::nodes::calc::SwishNode</a></div><div class="ttdoc">Represents a Swish activation function node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l02504">Nodes.cuh:2504</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1calc_1_1_tanh_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1calc_1_1_tanh_node.html">nz::nodes::calc::TanhNode</a></div><div class="ttdoc">Represents a hyperbolic tangent (tanh) activation function node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l02214">Nodes.cuh:2214</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1io_1_1_input_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1io_1_1_input_node.html">nz::nodes::io::InputNode</a></div><div class="ttdoc">Represents an input node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l00437">Nodes.cuh:437</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1io_1_1_output_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1io_1_1_output_node.html">nz::nodes::io::OutputNode</a></div><div class="ttdoc">Base class for loss function nodes in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l00683">Nodes.cuh:683</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1loss_1_1_binary_cross_entropy_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1loss_1_1_binary_cross_entropy_node.html">nz::nodes::loss::BinaryCrossEntropyNode</a></div><div class="ttdoc">Represents the Binary Cross-Entropy (BCE) loss function node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l04958">Nodes.cuh:4958</a></div></div>
<div class="ttc" id="aclassnz_1_1nodes_1_1loss_1_1_mean_squared_error_node_html"><div class="ttname"><a href="classnz_1_1nodes_1_1loss_1_1_mean_squared_error_node.html">nz::nodes::loss::MeanSquaredErrorNode</a></div><div class="ttdoc">Represents the Mean Squared Error (MSE) loss function node in a computational graph.</div><div class="ttdef"><b>Definition</b> <a href="#l04804">Nodes.cuh:4804</a></div></div>
<div class="ttc" id="anamespacenz_1_1nodes_html"><div class="ttname"><a href="namespacenz_1_1nodes.html">nz::nodes</a></div><div class="ttdoc">Contains classes and functionality for nodes in a neural network or computational graph.</div></div>
<div class="ttc" id="anamespacenz_1_1nodes_html_a42672c2d7708ae1d0c071fd9bef6c03c"><div class="ttname"><a href="namespacenz_1_1nodes.html#a42672c2d7708ae1d0c071fd9bef6c03c">nz::nodes::operator&lt;&lt;</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_base_of_v&lt; Node, T &gt;, std::ostream &amp; &gt; operator&lt;&lt;(std::ostream &amp;os, const T &amp;node)</div><div class="ttdoc">Overloads the &lt;&lt; operator to print information about a node.</div><div class="ttdef"><b>Definition</b> <a href="#l00114">Nodes.cuh:352</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
</small></address>
</div><!-- doc-content -->
</body>
</html>
